package main

// 作业一：看下面一段程序，回答问题
// s1 := make([]int, 3, 4)
// s2 := append(s1, 1)

// 请问s1、s2内各有什么元素？
//   s1是一个切片，使用make函数创建，长度为3，容量为4，元素都初始化为0
// s1是个切片，len=3,cap=4
// s2也是个切片，通过向s1追加元素“1”创建
// s1 [0 0 0]
// s2 [0 0 0 1]
// s1修改一个元素会影响s2吗？s2修改一个元素会影响s1吗？
//   会，s1切片容量足够，s2的追加操作不发生扩容，不影响底层数组，s2所谓的赋值给新变量实际上只是创建了一个新的头部并且连接到s1的底层数组上，s1s2共用底层数组共用
// s2再增加一个元素会怎么样？
//   当s2再增加一个元素时，len>cap，自动扩容，内存中另寻他处为s2开辟新的空间，完整拷贝数据至新的底层数组，然后增加一个元素，根据扩容原则，oldcap < 256,
//   newlen < 2 * oldcap, newcap = 2 * oldcap, newlen = oldlen + 1
